// struct Person {
//     name: String,
//     color: String,
//     age: i32,
// }

// struct Person<'a> {
//     name: &'a str,
//     color: String,
//     age: i32,
// }

// &String &str
fn print<'a>(data: &'a str) {
    println!("{}", data)
}

fn print_string<'a>(data: &'a String) {
    println!("{}", data)
}

fn main() {
    // let name = String::from("name");
    // let course = "math".to_string();
    // let new_name = name.replace("name", "newname");
    // let new_course = course.replace("math", "newmath");
    // println!("{} {}{}{}", name, course, new_name, new_course);

    // let rust = "\x52\x75\x73\x74";
    // println!("{rust}")

    // let color = "green".to_string();
    // // let name = "John".to_string();
    // let name = "John";
    // let mut people = Person {
    //     name,
    //     color,
    //     age: 89,
    // };
    // println!("{}", people.name);
    // println!("{}", people.color);
    // println!("{}", people.age);
    // people.name = "mike";
    // println!("{}", people.name);

    print("str1");
    print(&"str2".to_string());

    print_string(&"str3".to_string());
}
